package club.gggd.desensitization.anno;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Target选择 Method，表示该注解只能修饰方法
 * @author srx
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Desensitization {

    /**
     * @return 接口返回体的Class
     */
    Class DataClass();

    /**
     * @return 选填，若为空则表示该返回体可直接进行脱敏，不为空则填入返回体中存放含有脱敏字段的类
     * 可用逗号隔开表示脱敏的字段在类中类里面,用|隔开表示复杂结构
     */
    String field() default "";

    /**
     * @return 选填，若为false则表示简单结构，即只存在一个类的字段需要脱敏
     * 为true则表示复杂结构，例如Persion类中有一个字段tel需要脱敏，此时还有一个字段为List<User> users,User类中也有一个字段tel需要脱敏
     */
    boolean more() default false;
}
